home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / music / replayers / prorunner2.0_packer.s < prev    next >
Encoding:
Text File  |  1980-01-04  |  6.7 KB  |  380 lines

  1.  
  2. *-------------- Convert ProTracker module to ProRunner v2.0 Packed
  3.  
  4.         lea    pr_data(pc),a0
  5.         move.l    #pr_dataend-pr_data,d0
  6.         bsr.s    pr_Pack
  7.         rts
  8.  
  9. pr_Pack:    lea    pr_Module(pc),a1
  10.         move.l    a0,(a1)
  11.         cmp.l    #'M.K.',$438(a0)
  12.         bne.w    not_pr
  13.  
  14.         move.l    d0,pr_OldLength-pr_Module(a1)
  15.         moveq    #0,d0
  16.         move.b    $3B6(a0),d0
  17.         move.w    d0,pr_Wd3-pr_Module(a1)
  18.  
  19.         lea    $3B8(a0),a1
  20.         moveq    #$7F,d0
  21.         moveq    #0,d1
  22. cn1a:        move.b    (a1)+,d2
  23.         cmp.b    d1,d2
  24.         bls.s    cn1b
  25.         move.b    d2,d1
  26. cn1b:        dbra    d0,cn1a
  27.  
  28.         move.l    a0,-(sp)
  29.         lea    pr_Wd2(pc),a0
  30.         move.w    d1,(a0)            ;!!!!!!!!!!!!!!!!!!
  31.         move.l    (sp)+,a0
  32.  
  33.         lea    $43C(a0),a1
  34.         lea    (a0),a2
  35.         add.l    pr_OldLength(pc),a2
  36.         moveq    #0,d0
  37.         move.w    pr_Wd2(pc),d0
  38.         addq.w    #1,d0
  39.         lsl.l    #8,d0
  40.         lsl.l    #2,d0
  41.         add.l    d0,a1
  42.         sub.l    a1,a2
  43.  
  44.         move.l    a0,-(sp)
  45.         lea    pr_pr_r3(pc),a0
  46.         move.l    a2,(a0)            ;!!!!!!!!!!!!!!!!!!
  47.         move.l    (sp)+,a0
  48.  
  49.         lea    pr_dabuf(pc),a2
  50.         moveq    #$7F,d0
  51.         subq.w    #1,d0
  52.         moveq    #0,d7
  53.         moveq    #1,d6
  54. cn3b:        lea    $3B8(a0),a1
  55.         move.w    pr_Wd3(pc),d1
  56.         subq.w    #1,d1
  57.         moveq    #0,d5
  58. cn3c:        cmp.b    (a1)+,d7
  59.         bne.s    cn3d
  60.         move.b    d6,0(a2,d7.w)
  61.         addq.w    #1,d5
  62. cn3d:        dbra    d1,cn3c
  63.         tst.w    d5
  64.         beq.s    cn3e
  65.         addq.w    #1,d6
  66. cn3e:        addq.w    #1,d7
  67.         dbra    d0,cn3b
  68.  
  69.         lea    pr_dabuf(pc),a1
  70.         moveq    #0,d1
  71.         moveq    #$7F,d0
  72. cn4b:        move.b    (a1)+,d2
  73.         cmp.b    d1,d2
  74.         bls.s    cn4c
  75.         move.b    d2,d1
  76. cn4c:        dbra    d0,cn4b
  77.         subq.w    #1,d1
  78.  
  79.         move.l    a0,-(sp)
  80.         lea    pr_Wd1(pc),a0
  81.         move.w    d1,(a0)            ;!!!!!!!!
  82.         move.l    (sp)+,a0
  83.  
  84.         lea    $3B8(a0),a1
  85.         lea    pr_dabuf(pc),a2
  86.         lea    pr_dabuf3(pc),a3
  87.         move.w    pr_Wd3(pc),d0
  88.         subq.w    #1,d0
  89.         moveq    #0,d1
  90. cn5b:        move.b    (a1)+,d1
  91.         move.b    0(a2,d1.w),d1
  92.         subq.w    #1,d1
  93.         move.b    d1,(a3)+
  94.         dbra    d0,cn5b
  95.  
  96. cn6:        lea    $3B8(a0),a1
  97.         move.b    $3B8(a0),$438(a0)
  98.         lea    pr_Buf1(pc),a2
  99.         move.w    pr_Wd3(pc),d0
  100.         subq.w    #1,d0
  101.         moveq    #0,d1
  102. cn6b:        moveq    #0,d2
  103.         move.b    (a1)+,d2
  104.         lsl.l    #8,d2
  105.         lsl.l    #2,d2
  106.         lea    $43E(a0),a3
  107.         add.l    d2,a3
  108.         move.l    d1,d2
  109.         lsl.l    #4,d2
  110.         add.l    d2,a3
  111.         move.w    d1,d2
  112.         neg.w    d2
  113.         add.w    #$40,d2
  114.         lsl.w    #2,d2
  115.         subq.w    #1,d2
  116. cn6c:        moveq    #15,d3
  117.         and.b    (a3),d3
  118.         cmp.b    #13,d3
  119.         beq.s    cn6f
  120. cn6d:        addq.l    #4,a3
  121.         dbra    d2,cn6c
  122.         bra.s    cn6e
  123. cn6f:        moveq    #0,d3
  124.         move.b    1(a3),d3
  125.         beq.s    cn6d
  126.         moveq    #15,d4
  127.         and.b    d3,d4
  128.         lsr.b    #4,d3
  129.         mulu    #10,d3
  130.         add.w    d4,d3
  131.         move.b    d3,1(a3)
  132.         move.w    d3,(a2)
  133.         move.w    d3,d1
  134. cn6e:        addq.l    #2,a2
  135.         dbra    d0,cn6b
  136.  
  137.         lea    $3B9(a0),a1
  138.         lea    $43C(a0),a2
  139.         lea    pr_Buf1(pc),a3
  140.         moveq    #$7F,d0
  141. cn7a:        moveq    #0,d1
  142.         move.b    (a1)+,d1
  143.         moveq    #0,d2
  144.         move.w    (a3)+,d2
  145.         tst.w    d2
  146.         beq.s    cn7b
  147.         lsl.l    #8,d1
  148.         lsl.l    #2,d1
  149.         move.l    a2,a4
  150.         add.l    d1,a4
  151.         lsl.l    #4,d2
  152.         add.l    d2,a4
  153.         move.b    #$80,d7
  154.         or.b    d7,(a4)
  155.         or.b    d7,4(a4)
  156.         or.b    d7,8(a4)
  157.         or.b    d7,12(a4)
  158. cn7b:        dbra    d0,cn7a
  159.  
  160.         bsr.w    cn8
  161.  
  162.         lea    (a0),a6
  163.         move.l    #'SNT!',(a6)+
  164.         addq.l    #4,a6
  165.  
  166.         lea    $14(a0),a1
  167.         moveq    #$16,d1
  168.         moveq    #$1E,d0
  169. cnn9b:        add.l    d1,a1
  170.         move.l    (a1)+,(a6)+
  171.         move.l    (a1)+,(a6)+
  172.         dbra    d0,cnn9b
  173.         move.w    (a1)+,(a6)+
  174.         lea    pr_dabuf3(pc),a1
  175.         moveq    #$1F,d0
  176. cnn9c:        move.l    (a1)+,(a6)+
  177.         dbra    d0,cnn9c
  178.  
  179.         lea    pr_Buf1(pc),a1
  180.         lea    pr_ln2(pc),a2
  181.         lea    $3B9(a0),a3
  182.         moveq    #$7F,d0
  183. cnn10b:        clr.w    (a6)+
  184.         moveq    #0,d1
  185.         move.b    (a3)+,d1
  186.         move.w    (a1)+,d2
  187.         tst.w    d2
  188.         beq.s    cnn10e
  189.         add.w    d1,d1
  190.         move.w    0(a2,d1.w),d1
  191.         lea    $43C(a0),a4
  192.         add.l    d1,a4
  193.         move.l    a4,a5
  194.         lsl.w    #2,d2
  195.         subq.w    #1,d2
  196. cnn10c:        tst.b    (a4)+
  197.         bmi.s    cnn10d
  198.         addq.l    #2,a4
  199. cnn10d:        dbra    d2,cnn10c
  200.         sub.l    a5,a4
  201.         move.w    a4,-2(a6)
  202. cnn10e:        dbra    d0,cnn10b
  203.  
  204.         lea    (a6),a2
  205.         moveq    #$3F,d0
  206. cnn11c:        clr.w    (a6)+
  207.         dbra    d0,cnn11c
  208.  
  209.         lea    pr_dabuf(pc),a4
  210.         lea    pr_ln2(pc),a3
  211.         moveq    #0,d3
  212.         moveq    #$40,d0
  213. cnn12b:        tst.b    (a4)
  214.         beq.s    cnn12f
  215.         move.w    d3,d2
  216.         add.w    d2,d2
  217.         sub.l    a1,a1
  218.         move.w    0(a3,d2.w),a1
  219.         add.l    a0,a1
  220.         lea    $43C(a1),a1
  221.         move.l    a6,a5
  222.         sub.l    a0,a5
  223.         lea    -$302(a5),a5
  224.         move.w    a5,(a2)+
  225.         move.w    #$FF,d1
  226. cnn12c:        btst    #7,(a1)
  227.         beq.s    cnn12d
  228.         move.b    (a1)+,(a6)+
  229.         bra.s    cnn12e
  230.  
  231. cnn12d:        move.b    (a1)+,(a6)+
  232.         move.b    (a1)+,(a6)+
  233.         move.b    (a1)+,(a6)+
  234. cnn12e:        dbra    d1,cnn12c
  235. cnn12f:        addq.l    #1,d3
  236.         addq.l    #1,a4
  237.         dbra    d0,cnn12b
  238.  
  239.         move.l    a6,a1
  240.         suba.l    a0,a1
  241.         move.l    a1,4(a0)
  242.         move.l    pr_pr_r3(pc),d0
  243.         lea    $43C(a0),a1
  244.         moveq    #0,d1
  245.         move.w    pr_Wd2(pc),d1
  246.         addq.w    #1,d1
  247.         lsl.l    #8,d1
  248.         lsl.l    #2,d1
  249.         add.l    d1,a1
  250. cnn13b:        move.l    (a1)+,(a6)+
  251.         subq.l    #4,d0
  252.         bgt.s    cnn13b
  253.  
  254.         move.l    a6,a4
  255.         sub.l    a0,a4
  256.         move.l    a4,d0
  257. not_pr        rts
  258.  
  259. cn8:        lea    $43C(a0),a1
  260.         lea    (a1),a2
  261.         lea    pr_ln1(pc),a6
  262.         lea    pr_ln2(pc),a3
  263.         moveq    #0,d0
  264.         move.w    pr_Wd2(pc),d0
  265. cn8b:        move.l    a2,a4
  266.         sub.l    a0,a4
  267.         lea    -$43C(a4),a4
  268.         move.w    a4,(a3)+
  269.         moveq    #$3F,d6
  270.         moveq    #-1,d1
  271.         move.l    d1,(a6)
  272.         move.l    d1,4(a6)
  273.         move.l    d1,8(a6)
  274.         move.l    d1,12(a6)
  275. cn8c:        moveq    #3,d5
  276. cn8d:        tst.l    (a1)
  277.         bmi.s    cn8f
  278.         bne.s    cn8e
  279.         clr.l    (a1)+
  280.         move.b    #$80,(a2)+
  281.         dbra    d5,cn8d
  282.         dbra    d6,cn8c
  283.         dbra    d0,cn8b
  284.         rts
  285. cn8e:        move.l    d5,d1
  286.         lsl.l    #2,d1
  287.         move.l    0(a6,d1.w),d2
  288.         cmp.l    (a1),d2
  289.         bne.s    cn8f
  290.         clr.l    (a1)+
  291.         move.b    #$C0,(a2)+
  292.         dbra    d5,cn8d
  293.         dbra    d6,cn8c
  294.         dbra    d0,cn8b
  295.         rts
  296.  
  297. cn8f:        move.l    (a1),0(a6,d1.w)
  298.         move.w    (a1),d1
  299.         and.w    #$FFF,d1
  300.         move.b    (a1),d2
  301.         move.b    2(a1),d3
  302.         lsr.b    #4,d3
  303.         and.b    #$70,d2
  304.         or.b    d3,d2
  305.         move.w    2(a1),d3
  306.         and.w    #$FFF,d3
  307.         clr.l    (a1)+
  308.         moveq    #0,d4
  309.         tst.w    d1
  310.         beq.s    cn8h
  311.         lea    pr_periods(pc),a4
  312. cn8g:        addq.w    #1,d4
  313.         cmp.w    (a4)+,d1
  314.         bne.s    cn8g
  315. cn8h:        lsl.b    #1,d4
  316.         move.b    d4,(a2)
  317.         move.b    d2,d1
  318.         and.b    #1,d1
  319.         or.b    d1,(a2)
  320.         bclr    #0,d2
  321.         lsl.b    #3,d2
  322.         or.b    d2,1(a2)
  323.         move.w    d3,d1
  324.         lsr.w    #8,d1
  325.         or.b    d1,1(a2)
  326.         move.b    d3,2(a2)
  327.         addq.l    #3,a2
  328.         dbra    d5,cn8d
  329.         dbra    d6,cn8c
  330.         dbra    d0,cn8b
  331.         rts
  332.  
  333. pr_ln1:        ds.l    4
  334. pr_flag1:    ds.b    138
  335. pr_dabuf3:    ds.b    130
  336. pr_dabuf:    ds.b    130
  337. pr_ln2:        ds.b    128
  338. pr_Wd1:        ds.w    1
  339. pr_Wd2:        ds.w    1
  340. pr_Wd3:        ds.w    1
  341. pr_Long1:    ds.l    1
  342. pr_OldLength:    ds.l    1
  343. pr_Module:    ds.l    1
  344. pr_pr_r3:    ds.l    1
  345. pr_Buf1:    ds.l    $40
  346.  
  347. pr_periods:
  348.     
  349. ; Tuning 0, Normal
  350.     dc.w    856,808,762,720,678,640,604,570,538,508,480,453
  351.     dc.w    428,404,381,360,339,320,302,285,269,254,240,226
  352.     dc.w    214,202,190,180,170,160,151,143,135,127,120,113
  353. ; Tuning 1
  354.     dc.w    850,802,757,715,674,637,601,567,535,505,477,450
  355.     dc.w    425,401,379,357,337,318,300,284,268,253,239,225
  356.     dc.w    213,201,189,179,169,159,150,142,134,126,119,113
  357. ; Tuning 2
  358.     dc.w    844,796,752,709,670,632,597,563,532,502,474,447
  359.     dc.w    422,398,376,355,335,316,298,282,266,251,237,224
  360.     dc.w    211,199,188,177,167,158,149,141,133,125,118,112
  361. ; Tuning 3
  362.     dc.w    838,791,746,704,665,628,592,559,528,498,470,444
  363.     dc.w    419,395,373,352,332,314,296,280,264,249,235,222
  364.     dc.w    209,198,187,176,166,157,148,140,132,125,118,111
  365. ; Tuning 4
  366.     dc.w    832,785,741,699,660,623,588,555,524,495,467,441
  367.     dc.w    416,392,370,350,330,312,294,278,262,247,233,220
  368.     dc.w    208,196,185,175,165,156,147,139,131,124,117,110
  369. ; Tuning 5
  370.     dc.w    826,779,736,694,655,619,584,551,520,491,463,437
  371.     dc.w    413,390,368,347,328,309,292,276,260,245,232,219
  372.     dc.w    206,195,184,174,164,155,146,138,130,123,116,109
  373. ; Tuning 6
  374.     dc.w    820,774,730,689,651,614,580,547,516,487,460,434
  375.     dc.w    410,387,365,345,325,307,290,274,258,244,230,217
  376.     dc.w    205,193,183,172,163,154,145,137,129,122,115,109
  377.     
  378. pr_data:    incbin    "work:asm-one/raw/mod.ttt" 
  379. pr_dataend:
  380.